package org.example.configs;


import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.DirectExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration //作为配置类
public class RabbitConfigDirect {


    //   Queue的包选择 ： import org.springframework.amqp.core.Queue;
//    定义一个存储消息的消息队列对象
    @Bean
    public Queue directQueue(){

//        return new Queue("direct_queue",true,false,false);
//         第一个参数      指定消息队列对象的名称
//         第二个参数      durable：是否持久化，默认为true
//        第三个参数      exclusive：是否当前连接专用，默认为false，连接关闭后队列即被删除
//       第四个参数      autoDelete：是否自动删除，当生产者活消费者不适应此队列，自动删除，默认为false

        return new Queue("direct_queue");
    }


    //    定义一个交换机对象
    @Bean
    public DirectExchange directExchange(){
//          参数是自定义的交换机名称
        return new DirectExchange("directExchange");
    }

    //    把队列和交换机绑定在一起，绑定关系
    @Bean
    public Binding bindingDirect(){
//        direct为绑定的名称
        return BindingBuilder.bind(directQueue()).to(directExchange()).with("direct");
    }




    //    可以定义多个消息队列对象，
    @Bean
    public Queue directQueue2(){
        return new Queue("direct_queue2");
    }

    //    多个消息队列对象可以用同一台交换机绑定
    @Bean
    public Binding bindingDirect2(){
        return BindingBuilder.bind(directQueue2()).to(directExchange()).with("direct2");
    }

}